/**
 * @fileOverview
 *
 * 提供折线相连的方法
 *
 * @author: techird
 * @copyright: Baidu FEX, 2014
 */

define(function(require, exports, module) {
    var kity = require('../core/kity');
    var connect = require('../core/connect');

    connect.register('poly', function(node, parent, connection, width) {

        // 连线起点和终点
        var po = parent.getLayoutVertexOut(),
        pi = node.getLayoutVertexIn();

        // 连线矢量和方向
        var v = parent.getLayoutVectorOut().normalize();

        var r = Math.round;
        var abs = Math.abs;

        var pathData = [];
        pathData.push("M", r(po.x) - 10, r(po.y));

        switch (true) {
            case abs(v.x) > abs(v.y) && v.x < 0 :
                // left
                pathData.push("h", -parent.getStyle("margin-left")),
                pathData.push("v", pi.y - po.y),
                pathData.push("H", pi.x),
                pathData.push("h", 0);
                break;
            case abs(v.x) > abs(v.y) && v.x >= 0 :
                // right
                pathData.push("h", parent.getStyle("margin-right")),
                pathData.push("v", pi.y - po.y),
                pathData.push("H", pi.x),
                pathData.push("h", 0);
                break;
            case abs(v.x) <= abs(v.y) && v.y < 0 :
                // top
                pathData.push("v", -parent.getStyle("margin-top")),
                pathData.push("h", pi.x - po.x),
                pathData.push("V", pi.y),
                pathData.push("h", 0);
                break;
            case abs(v.x) <= abs(v.y) && v.y >= 0 :
                // bottom
                pathData.push("v", parent.getStyle("margin-bottom")),
                pathData.push("h", pi.x - po.x),
                pathData.push("V", pi.y),
                pathData.push("h", 10);
                break;
        }
        connection.setMarker(null);
        connection.setPathData(pathData);
    });
});